package com.far;

import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;

import android.opengl.GLSurfaceView.Renderer;
import android.opengl.GLU;

public class OpenGLRenderer implements Renderer {

	private Square boringSquare;
	private Square flashySquare;
	
	private float angle = 0;
	
	public OpenGLRenderer(){
		boringSquare = new Square();
		flashySquare = new Square(Utils.RED, Utils.BLUE, Utils.GREEN, Utils.PURPLE);
	}
	
	@Override
	public void onSurfaceCreated(GL10 gl, EGLConfig config) {
		gl.glClearColor(0.0f, 0.0f, 0.0f, 0.5f);
		gl.glShadeModel(GL10.GL_SMOOTH);
		gl.glClearDepthf(1.0f);
		gl.glEnable(GL10.GL_DEPTH_TEST);
		gl.glDepthFunc(GL10.GL_LEQUAL);
		gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST);
		
	}
	
	
	@Override
	public void onDrawFrame(GL10 gl) {
		gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
		gl.glLoadIdentity();
		gl.glTranslatef(0, 0, -20);
		
		gl.glPushMatrix();
		gl.glRotatef(angle, 0, 0, 1);
		boringSquare.draw(gl);
		gl.glPopMatrix();
		
		gl.glPushMatrix();
		gl.glRotatef(-angle, 0, 0, 1);
		gl.glTranslatef(3, 0, 0);
		gl.glScalef(0.5f, 0.5f, 0.5f);
		flashySquare.draw(gl);
		
		gl.glPushMatrix();
		gl.glRotatef(-angle, 0, 0, 1);
		gl.glTranslatef(2, 0, 0);
		gl.glScalef(0.5f, 0.5f, 0.5f);
		gl.glRotatef(angle*10, 0, 0, 1);
		boringSquare.draw(gl);
		
		gl.glPopMatrix();
		gl.glPopMatrix();
		
		angle++;
	}

	@Override
	public void onSurfaceChanged(GL10 gl, int width, int height) {
		gl.glViewport(0, 0, width, height);
		gl.glMatrixMode(GL10.GL_PROJECTION);
		gl.glLoadIdentity();
		GLU.gluPerspective(gl, 45.0f, (float)width/(float)height, 0.1f, 100.0f);
		gl.glMatrixMode(GL10.GL_MODELVIEW);
		gl.glLoadIdentity();
	}

	

}
